package ballena.activities;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.StreamCorruptedException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import ballena.activities.Amigos.AdaptadorAmigos;
import ballena.activities.Amigos.ViewHolder;
import ballena.entidades.Usuario;
import ballena.utiles.Global;
import ballena.utiles.Servlet;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class AmigosOnline extends Activity {

	List<Usuario> amigosOnline = new ArrayList<Usuario>();
	private ListView lvListaAmigosOnline;

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.lista_amigos_online);

		int idUsuario = Global.usuario.getId();
		amigosOnline.clear(); // por si las moscas inicializo la lista
		amigosOnline.addAll(pedirListaAmigosOnline(idUsuario));
		crearVista();
	}

	public void asociarVariables() {
		lvListaAmigosOnline = (ListView) findViewById(R.id.lvListaAmigosOnline);
	}

	public void crearVista() {
		asociarVariables();
		refreshListItems();
	}

	private void refreshListItems() {
		AdaptadorAmigosOnline adaptador = new AdaptadorAmigosOnline(this);
		lvListaAmigosOnline.setAdapter(adaptador);
	}

	static class ViewHolder {
		TextView nombre;
		TextView apellidos;
	}

	List<Usuario> pedirListaAmigosOnline(int idUsuario) {
		List<Usuario> listaAmigosOnline = new ArrayList<Usuario>();
		listaAmigosOnline.clear(); // por si las moscas la limpio
		// aqu� pido al servlet mi lista de usuarios online amigos del usuario
		// idUsuarios
		String param[] = { "accion=" + Global.AMIGOSONLINE, "id=" + idUsuario };
		Servlet s = new Servlet(Global.SERVLET, param);
		s.conectar();

		ObjectInputStream in;

		try {
			InputStream ain = s.getInputStream();
			in = new ObjectInputStream(ain);
			// no me hace falta comprobar la lista, o es vac�a o tiene
			// contenido

			int tamano = (Integer) in.readInt();

			Object[] datos = new Object[7];

			for (int cont = 0; cont < tamano; cont++) {
				datos[0] = in.readInt();
				datos[1] = in.readInt();
				datos[2] = in.readUTF();
				datos[3] = in.readUTF();
				datos[4] = in.readUTF();
				datos[5] = in.readUTF();
				datos[6] = (Date) in.readObject();
				listaAmigosOnline.add(new Usuario(datos));
			}

		} catch (StreamCorruptedException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			s.desconectar();
		}
		return listaAmigosOnline;
	}

	class AdaptadorAmigosOnline extends ArrayAdapter {

		Activity context;

		AdaptadorAmigosOnline(Activity context) {
			super(context, R.layout.item_lista_amigos_online, amigosOnline);
			this.context = context;
			
		}

		public View getView(final int position, View convertView,
				ViewGroup parent) {
			View item = convertView;
			ViewHolder holder;

			if (item == null) {
				LayoutInflater inflater = context.getLayoutInflater();
				item = inflater.inflate(R.layout.item_lista_amigos_online, null);
				/*
				 * Creo el contenedor y lo asocio a sus respectivos elementos de
				 * la vista
				 */
				holder = new ViewHolder();
				holder.nombre = (TextView) item
						.findViewById(R.id.tvLAONombre);
				holder.apellidos = (TextView) item
						.findViewById(R.id.tvLAOApellidos);

				item.setTag(holder);
			} else {
				holder = (ViewHolder) item.getTag();
			}
			
			holder.nombre.setText(amigosOnline.get(position).getNombre().toString());
			holder.apellidos.setText(amigosOnline.get(position).getApellidos());

		
			
			item.setOnClickListener(new View.OnClickListener() {
				public void onClick(View view) {
					Intent aEncuentraAmigo = new Intent(AmigosOnline.this, EncuentraAmigo.class);
					aEncuentraAmigo.putExtra("id", amigosOnline.get(position).getId());
					startActivity(aEncuentraAmigo);
				}
			});

			return (item);
		}
	}

}
